#include "valordados.h"
#include "ui_valordados.h"
#include <QGraphicsPixmapItem>
#include <QDebug>

ValorDados *ValorDados::instance = NULL;

QString selecionarNomeArquivo (QString valor_dado)
{
    int i = valor_dado.toInt();
    switch (i) {

        case 1:
            return "dado_1_";
            break;
        case 2:
            return "dado_2_";
            break;
        case 3:
            return "dado_3_";
            break;
        case 4:
            return "dado_4_";
            break;
        case 5:
            return "dado_5_";
            break;
        case 6:
            return "dado_6_";
            break;
        default:
            return "";
            break;
    }
}

ValorDados::ValorDados(QWidget *parent) :
    QWidget(parent),
    m_ui(new Ui::ValorDados)
{
    ValorDados::instance = this;
    m_ui->setupUi(this);
    this->hide();
    this->scene = new QGraphicsScene(this);
    this->scene->setSceneRect(this->m_ui->graphicsView->rect().x() + 2,
                              this->m_ui->graphicsView->rect().y() + 2,
                              this->m_ui->graphicsView->rect().width() - 4,
                              this->m_ui->graphicsView->rect().height() - 4);
    this->m_ui->graphicsView->setScene(scene);
    this->setMinimumSize(this->size());
    this->setMaximumSize(this->size());
    this->setFixedSize(this->size());
}

ValorDados::~ValorDados()
{
    delete m_ui;
}

void ValorDados::changeEvent(QEvent *e)
{
    QWidget::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        m_ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

void ValorDados::mostrarDados(QString texto)
{
    QRegExp reg("[<]{1,1}[a-z]*[>]{1,1}");
    QStringList valores = texto.split(reg);

    if (valores.at(0) == "")
        valores.takeFirst();

    this->m_ui->label->setText("Dados do atacante " + valores.at(0));

    QGraphicsPixmapItem* item;

    int perdas_ataque = 0;
    int perdas_defesa = 0;

    this->scene->clear();
    this->scene->update();

    if (valores.at(1).toInt() != 0) {
        item = new QGraphicsPixmapItem(QPixmap(":/mapa/" + selecionarNomeArquivo(valores.at(1)) + "ataque.png"));
        this->scene->addItem(item);
        item->setPos(30,40);
    }
    if (valores.at(2).toInt() != 0) {
        item = new QGraphicsPixmapItem(QPixmap(":/mapa/" + selecionarNomeArquivo(valores.at(2)) + "ataque.png"));
        this->scene->addItem(item);
        item->setPos(80,40);
    }
    if (valores.at(3).toInt() != 0) {
        item = new QGraphicsPixmapItem(QPixmap(":/mapa/" + selecionarNomeArquivo(valores.at(3)) + "ataque.png"));
        this->scene->addItem(item);
        item->setPos(130,40);
    }
    this->m_ui->label_2->setText("Dados do defensor " + valores.at(4));
    if (valores.at(5).toInt() != 0) {
        item = new QGraphicsPixmapItem(QPixmap(":/mapa/" + selecionarNomeArquivo(valores.at(5)) + "defesa.png"));
        this->scene->addItem(item);
        item->setPos(30,120);
    }
    if (valores.at(6).toInt() != 0) {
        item = new QGraphicsPixmapItem(QPixmap(":/mapa/" + selecionarNomeArquivo(valores.at(6)) + "defesa.png"));
        this->scene->addItem(item);
        item->setPos(80,120);
    }
    if (valores.at(7).toInt() != 0) {
        item = new QGraphicsPixmapItem(QPixmap(":/mapa/" + selecionarNomeArquivo(valores.at(7)) + "defesa.png"));
        this->scene->addItem(item);
        item->setPos(130,120);
    }

    if (valores.at(1).toInt() > 0 && valores.at(5).toInt() > 0) {

        if (valores.at(1).toInt() > valores.at(5).toInt())
            perdas_defesa++;
        else
            perdas_ataque++;
    }

    if (valores.at(2).toInt() > 0 && valores.at(6).toInt() > 0) {

        if (valores.at(2).toInt() > valores.at(6).toInt())
            perdas_defesa++;
        else
            perdas_ataque++;
    }

    if (valores.at(3).toInt() > 0 && valores.at(7).toInt() > 0) {

        if (valores.at(3).toInt() > valores.at(7).toInt())
            perdas_defesa++;
        else
            perdas_ataque++;
    }

    this->m_ui->textBrowser->setText("Dados da batalha: Atacante " + valores.at(0) + " perdeu " + QString::number(perdas_ataque) +
                                     " tropas, enquanto defensor " + valores.at(4) + " perdeu " + QString::number(perdas_defesa));

    this->show();
}
